package edu.sctu.zhengsenwen.month201506.day20150619;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.List;
import java.util.Map;

/**
 * Created by user15 on 2015/6/19.
 */
public class HttpRequest {

    public static String doRequest(String path, String param) throws IOException {


        URL url = new URL(path);
        HttpURLConnection httpUrlConn = (HttpURLConnection) url.openConnection();

        httpUrlConn.setDoOutput(false);
        httpUrlConn.setDoInput(true);
        httpUrlConn.setUseCaches(false);

        httpUrlConn.setRequestMethod("GET");
        httpUrlConn.connect();

        InputStream inputStream = httpUrlConn.getInputStream();
        InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "UTF-8");
        BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

        String result = null;

        while ((result = bufferedReader.readLine()) != null) {
            bufferedReader.lines();
        }

        bufferedReader.close();
        inputStreamReader.close();

        inputStream.close();
        inputStream = null;
        httpUrlConn.disconnect();

        return bufferedReader.toString();
    }


// */
//public class HttpRequestUtil {
//    static boolean proxySet = false;
//    static String proxyHost = "127.0.0.1";
//    static int proxyPort = 8087;

//            while ((str = bufferedReader.readLine()) != null) {
//                buffer.append(str);

    /**
     * 发送http请求取得返回的输入流
     *
     * @param path 请求地址
     * @return InputStream
     */
    public static InputStream httpRequestGet(String path) throws IOException {


        URL url = new URL(path);
        HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
        httpURLConnection.setDoInput(true);
        httpURLConnection.setRequestMethod("GET");
        httpURLConnection.connect();

        InputStream inputStream = httpURLConnection.getInputStream();


        return inputStream;
    }

      public static String httpRequestPost(String path,String param) {

          String result = "";
          try {
              String urlNameString = path + "?" + param;
              URL url = new URL(path);

              URLConnection urlConnection = url.openConnection();

              urlConnection.setRequestProperty("accept", "*/*");
              urlConnection.setRequestProperty("connection", "Keep-Alive");

              urlConnection.connect();

              Map<String, List<String>> map = urlConnection.getHeaderFields();
              for (String key : map.keySet()) {

                  System.out.println(key + "--->" + map.get(key));
              }


              BufferedReader bufferedReader = new BufferedReader(
                      new InputStreamReader(urlConnection.getInputStream()));

              String line;
              while ((line = bufferedReader.readLine()) != null) {

                  result += line;
              }
          } catch (MalformedURLException e) {
              System.out.println("发送GET请求出现异常！" + e);
              e.printStackTrace();


          } catch (IOException e) {
              e.printStackTrace();
          }

          return result;
      }


}




//        // 使用finally块来关闭输入流
//        finally {
//            try {
//                if (in != null) {
//                    in.close();
//                }
//            } catch (Exception e2) {
//                e2.printStackTrace();
//            }
//        }
//        return result;
//    }


//
//
//    /**
//     * 向指定URL发送GET方法的请求
//     *
//     * @param url
//     *            发送请求的URL
//     * @param param
//     *            请求参数，请求参数应该是 name1=value1&name2=value2 的形式。
//     * @return URL 所代表远程资源的响应结果
//     */
//
//
//    /**
//     * 向指定 URL 发送POST方法的请求
//     *
//     * @param url
//     *            发送请求的 URL
//     * @param param
//     *            请求参数，请求参数应该是 name1=value1&name2=value2 的形式。
//     * @param isproxy
//     *               是否使用代理模式
//     * @return 所代表远程资源的响应结果
//     */
//    public static String sendPost(String url, String param,boolean isproxy) {
//        OutputStreamWriter out = null;
//        BufferedReader in = null;
//        String result = "";
//        try {
//            URL realUrl = new URL(url);
//            HttpURLConnection conn = null;
//            if(isproxy){//使用代理模式
//                @SuppressWarnings("static-access")
//                Proxy proxy = new Proxy(Proxy.Type.DIRECT.HTTP, new InetSocketAddress(proxyHost, proxyPort));
//                conn = (HttpURLConnection) realUrl.openConnection(proxy);
//            }else{
//                conn = (HttpURLConnection) realUrl.openConnection();
//            }
//            // 打开和URL之间的连接
//
//            // 发送POST请求必须设置如下两行
//            conn.setDoOutput(true);
//            conn.setDoInput(true);
//            conn.setRequestMethod("POST");    // POST方法
//
//
//            // 设置通用的请求属性
//
//            conn.setRequestProperty("accept", "*/*");
//            conn.setRequestProperty("connection", "Keep-Alive");
//            conn.setRequestProperty("user-agent",
//                    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
//            conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
//
//            conn.connect();
//
//            // 获取URLConnection对象对应的输出流
//            out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");
//            // 发送请求参数
//            out.write(param);
//            // flush输出流的缓冲
//            out.flush();
//            // 定义BufferedReader输入流来读取URL的响应
//            in = new BufferedReader(
//                    new InputStreamReader(conn.getInputStream()));
//            String line;
//            while ((line = in.readLine()) != null) {
//                result += line;
//            }
//        } catch (Exception e) {
//            System.out.println("发送 POST 请求出现异常！"+e);
//            e.printStackTrace();
//        }
//        //使用finally块来关闭输出流、输入流
//        finally{
//            try{
//                if(out!=null){
//                    out.close();
//                }
//                if(in!=null){
//                    in.close();
//                }
//            }
//            catch(IOException ex){
//                ex.printStackTrace();
//            }
//        }
//        return result;
//    }
//
//    public static void main(String[] args) {
//        //demo:代理访问
//        String url = "http://api.adf.ly/api.php";
//        String para = "key=youkeyid&youuid=uid&advert_type=int&domain=adf.ly&url=http://somewebsite.com";
//
//        String sr=HttpRequestUtil.sendPost(url,para,true);
//        System.out.println(sr);
//    }
//
//}